package xyz.yuanwl.demo.something;

import org.junit.Test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * <p>
 *
 * @author: Yuanwl
 * @date: 2020/2/13 12:24
 */
public class 正则表达式 {

    @Test
    public void 查找盖章位置() {
        String content = " 债务人：【鑫满达[测试<test>]电路(深圳)-yuanwl Co.,Ltd.】        （盖章）";
        String keyword = correctKeyword("鑫满达[测试<test>]电路(深圳)-yuanwl Co.,Ltd.");
        System.err.println(keyword);
        Pattern p = Pattern.compile("(:|：)\\s*?(\\[|【)*?" + keyword + "(\\]|】)*?");
        Matcher m = p.matcher(content);
        if (m.find()){
            System.err.println(m.start());
        }
    }

    private String correctKeyword(String str) {
        String regEx="[$^.\\[\\]*?+{}|()]"; //正则表达式的特殊字符
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        //查找出keyword中所有特殊字符并替换成普通字符
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            m.appendReplacement(sb, "\\\\" + m.group()); //加反斜杠变成普通字符
        }
        m.appendTail(sb);
        return sb.toString();
    }

}
